package file;

import java.io.File;

/**
 * 删除一个目录
 * @author 范传奇
 *
 */
public class Test2 {
	public static void main(String[] args) {
		File dir = new File("./a");
		delete(dir);
	}
	/**
	 * 递归是整个流程重复执行
	 * 
	 * 递归在开发中尽量避免，开销大，运行慢。
	 * 
	 * 使用递归的注意事项:
	 * 1:方法内部调用当前方法称为递归
	 * 2:递归调用必须靠一个分支语句控制，不能必定执行，否则是死循环
	 * 3:递归的层级尽可能少(开销大)
	 * @param file
	 */
	public static void delete(File file) {
		/*
		 * 删除时要判定file表示的是否为一个目录，要是目录需要先清空目录(先把所有
		 * 子项删除)，然后再删除该目录。
		 * 如果file表示的是一个文件，则直接删除
		 */
		if(file.isDirectory()) {
			//先清空该目录
			File[] subs = file.listFiles();//先获取该目录中的所有子项
			for(int i=0;i<subs.length;i++) {
				File sub = subs[i];
				//一个方法内部调用自己这个方法的现象称为递归调用
				delete(sub);		
			}
		}
		file.delete();		
	}
}



